public class List_Test {
    public static void main(String[] args) {
        ListNode head = new ListNode();

    }
    /**
     * 反转单链表。
     *
     * 该函数通过 迭代 的方式将给定的单链表反转，并返回反转后的链表头节点。
     *
     * @param head 链表的头节点。如果链表为空，则返回null。
     * @return 反转后的链表头节点。
     */
    public ListNode reverseList(ListNode head) {
        // 如果链表为空，直接返回null
        if(head == null) {
            return head;
        }

        // 初始化当前节点为头节点的下一个节点，并将头节点的next置为null，作为反转后的尾节点
        ListNode cur = head.next;
        head.next = null;

        // 遍历链表，逐个反转节点
        while(cur != null) {
            // 保存当前节点的下一个节点
            ListNode curN = cur.next;
            // 将当前节点的next指向前一个节点，实现反转
            cur.next = head;
            // 将head移动到当前节点，作为下一个节点的前一个节点
            head = cur;
            // 移动到下一个节点
            cur = curN;
        }

        // 返回反转后的链表头节点
        return head;
    }
}

